package com.xuzimian.globaldemo.mq.rabbitmq.producer;

import com.xuzimian.globaldemo.mq.rabbitmq.constants.Config;
import com.xuzimian.globaldemo.mq.rabbitmq.util.JmsMqUtil;
import org.junit.jupiter.api.Test;

import javax.jms.*;

/***
 * @Description rabbitmq jms客户端，amqp协议的点对点(队列模式)的生产者
 * @author xzm
 */
public class JMSQueueProducer {

    @Test
    public void startProducer() throws JMSException {
        Connection connection = null;
        Session session = null;
        try {
            connection = JmsMqUtil.createQueueConnection();
            //启动连接
            connection.start();
            //创建会话
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //创建 Queue，需指定其对应的队列名称，消息生产者和消费者将根据它来发送、接收对应的消息。
            Queue myTestQueue = session.createQueue(Config.MQServerConect.QUQUE_DEFAULT_NAME);
            //消息生产者
            MessageProducer producer = session.createProducer(myTestQueue);
            //创建一条消息对象
            TextMessage message = session.createTextMessage("测试点对点的一条消息333");
            //发送一条消息
            producer.send(message);
            //事务提交
            session.commit();

        } catch (JMSException e) {
            throw e;
        } finally {
            //关闭资源
            if (null != session) {
                session.close();
            }
            if (null != connection) {
                connection.close();
            }
        }
    }

}
